Micron Document
welo git mirrors

Node / public / rns-proxy / commits / 8f24583

Commit 8f24583e5dc7ef32373f8f7ce94eda0db1fa0c75


Parents : 9000b24
Author : welo | main nixos computer <empty@empty.com>
Date : 2026-07-07T14:13:04+01:00

changed stuff

Changes

3 files changed, 13 insertions(+), 6 deletions(-)

M src/relay.rs +9 -4
M src/server.rs +3 -1

Diff

diff --git a/src/forwarding.rs b/src/forwarding.rs
index d1c59da..ff0f5b7 100644
--- a/src/forwarding.rs
+++ b/src/forwarding.rs
@@ -77,7 +77,7 @@ pub async fn udp_tunnel(mux: MuxHandle, reconnect_notify: Arc<Notify> , port: Fo
tokio::spawn(async move {
if let Ok(_) = udp_bind_connect(sid, mux.clone(), &mut session_rx, target_addr ).await {
- relay_forwarded_udp(sid, stream, mux_clone, session_rx).await;
+ relay_forwarded_udp(sid, stream, mux_clone, session_rx, port.server_port).await;
}
});
}

diff --git a/src/relay.rs b/src/relay.rs
index 6945537..9d374c8 100644
--- a/src/relay.rs
+++ b/src/relay.rs
@@ -1,6 +1,7 @@
//! Bidirectional TCP ↔ RNS relay — used by both client and server sessions.
use std::net::{Ipv4Addr, ToSocketAddrs};
+use std::os::unix::net::SocketAddr;
use std::str::SplitWhitespace;
use std::sync::Arc;
use std::time::Duration;
@@ -9,7 +10,6 @@ use fast_socks5::{new_udp_header, parse_udp_request};
use fast_socks5::util::target_addr::{TargetAddr, ToTargetAddr};
use log::{debug, error, warn};
use tokio::io::{AsyncReadExt, AsyncWriteExt};
-use tokio::net::unix::SocketAddr;
use tokio::sync::{Mutex, mpsc};
use udp_stream::UdpStream;
@@ -331,14 +331,16 @@ pub async fn relay_forwarded_udp(
stream: UdpStream, // stream between local forwarded port and the port
// of whatever application is connecting to it.
mux: MuxHandle,
- mut session_rx: mpsc::UnboundedReceiver<Frame>)
+ mut session_rx: mpsc::UnboundedReceiver<Frame>,
+ server_port: u16)
{
let mux_fwd = mux.clone();
+ let localhost_server_addr = (Ipv4Addr::LOCALHOST, server_port).to_target_addr().unwrap();
let (mut udp_read,mut udp_write) = tokio::io::split(stream);
- // TCP -> RNS
+ // UDP -> RNS
let tcp_to_rns = tokio::spawn(async move {
let mut buf = [0u8; 4096];
loop {
@@ -346,7 +348,10 @@ pub async fn relay_forwarded_udp(
Ok(0) => break,
Ok(n) => {
println!("{:?} {:?}", sid, &buf[..n]);
- mux_fwd.send(FrameType::Data, sid, buf[..n].to_vec());
+ let mut packet = new_udp_header(localhost_server_addr.clone() ).expect("cannot wrap udp packet");
+ packet.extend_from_slice(&buf[..n]);
+ println!("sending with stuff {:?}", packet);
+ mux_fwd.send(FrameType::Data, sid, packet.to_vec());
}
Err(e) => {
debug!("[{}] TCP read error: {}", sid, e);

diff --git a/src/server.rs b/src/server.rs
index 1e8b9ae..06a436f 100644
--- a/src/server.rs
+++ b/src/server.rs
@@ -242,8 +242,10 @@ async fn handle_server_session_udp(
// generally the udp socket will connect to 0.0.0.0:0 to allow to send and receive from
// every port. We don't police which sockets are valid here.
+ // warn!("ignoring what the client wanted to connect as and just")
println!("{}:{}",host,port);
- let socket = match UdpSocket::bind(format!("{}:{}",host,port)).await {
+ // let socket = match UdpSocket::bind(format!("{}:{}",host,port)).await {
+ let socket = match UdpSocket::bind("127.0.0.1:0").await {
Ok(s) => s,
Err(e) => {
warn!("[{}] udp bind failed 1: {}", sid, e);

Served by rngit 1.4.2 - Generated in 0.02s